Às vezes, é necessário converter uma tabela cruzada (pivô) em uma tabela plana. Este procedimento é denominado " correção de dados "
O programa LibreOffice Calc não possui uma funcionalidade padrão para conversão de tabelas dinâmicas em " plano ", mas você mesmo pode escrever o procedimento correspondente. Vamos ver como fazer isso.
Vejamos a imagem abaixo para entender mais claramente a essência do problema. À esquerda temos uma tabela em forma de matriz (tabela dinâmica), e à direita - uma tabela regular com colunas (tabela plana):
Ao expandir uma tabela, você descompacta o par atributo-valor que é a interseção das colunas na tabela matriz e os reorienta nas colunas niveladas na tabela simples:
Abra o menu Tools - Macros - Edit Macros..., selecione Module1 e copie o seguinte texto no módulo:
Sub UnPivotTable
' moonexcel.com.ua
Dim oBook As Object
Dim oActiveSheet As Object
Dim oSelRange As Object
Dim oNewSheet As Object
Dim i As Long
Dim iTopLabelRowCount As Integer
Dim iSideLabelColCount As Integer
oBook = ThisComponent
oActiveSheet = oBook.CurrentController.ActiveSheet
oSelRange = oBook.CurrentSelection
' Adicionar uma nova planilha
oBook.Sheets.insertNewByName("UnPivoted Table",0)
oNewSheet = oBook.Sheets(0)
' Determine o tamanho dos cabeçalhos
iTopLabelRowCount = InputBox(" Quantas linhas no cabeçalho superior? ")
iSideLabelColCount = InputBox(" Quantas colunas no cabeçalho lateral? ")
i = 0
For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count
For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count
For j = 1 To iSideLabelColCount
oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula
Next j
For k = 1 To iTopLabelRowCount
oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula
Next k
oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula
i = i + 1
Next c
Next r
End Sub
Em seguida, feche Macro Editor e retorne à sua planilha em LibreOffice Calc. Selecione a tabela inteira com os cabeçalhos superior e esquerdo e execute nossa nova macro através do menu Tools - Macros - Run Macro...
A macro irá inserir uma nova planilha nomeada em sua pasta de trabalho
Você também pode usar o utilitário "Tabela dinâmica (Unpivot)" instalando a extensão YLC_Utilities.oxt .
Depois disso, este utilitário estará disponível em todos os arquivos que serão abertos em LibreOffice Calc.